Day 21 함수(메소드)

Day21 21단계 2023-11-10

1. 뒤에서 5등 위로

import java.util.*;
class Solution {
    public int[] solution(int[] num_list) {
		Arrays.sort(num_list);
        return Arrays.copyOfRange(num_list, 5, num_list.length);
    }
}
return Arrays.stream(num_list).sorted().skip(5).toArray();

2. 전국 대회 선발 고사

import java.util.*;
class Solution {
    public int solution(int[] rank, boolean[] attendance) {
		int size = 0;
		for(boolean b : attendance) {
			if (b) size++;
		}
		
		int[][] arr = new int[size][2];
		int index = 0;
		for(int i = 0; i < rank.length; i++) {
			if (attendance[i]) {
				arr[index][0] = rank[i];
				arr[index++][1] = i;
			}
		}
		
		Arrays.sort(arr, (a, b) -> a[0] - b[0]);
		return 10000*arr[0][1] + 100*arr[1][1] + arr[2][1];
    }
}
  1. Stream : IntStream 생성 후 attendance의 요소가 true인 것만 filter()
    • 그 후 sorted()에서 rank 배열의 요소값으로 비교(오름차순)
    • limt()으로 3개의 요소만 남긴 뒤 reduce()로 순차적 연산 진행
  2. PriorityQueue : 생성자에서 rank요소의 오름차순 정렬 이후, attendance의 요소가 true인 경우에만 queue에 요소 추가 후 결과 연산 진행
  3. TreeMap : attendance의 요소가 true인 경우에만 rank의 요소를 추가. TreeMap이므로 오름차순 정렬이 자동으로 이루어진다.
    • tree의 keySet()을 순환하면서 3개의 요소만 List에 저장 후 연산 진행
  4. 그 외에도 ArrayList, HashMap을 사용한 풀이도 존재한다.